//-------------------------------------------------------------------
//	Copyright (c) 2010-2014  Zhirnov Andrey
//	This file is part of the "UX Standard Lib" project.
//	See copyright notice in "UX_STL_Core.h".
//-------------------------------------------------------------------

#ifndef _UXS_CONSTANTS_H
#define _UXS_CONSTANTS_H

#pragma once

#include "../BaseTypes/Types.h"

namespace UX_STL
{
namespace UXMath
{
	

	//
	// Constants
	//

	template <typename T>
	constexpr
	inline T Pi ()
	{
		return T( 3.14159265358979323846 );
	}
	
	
	template <typename T>
	constexpr
	inline T Pi (T scale)
	{
		return UXMath::Pi<T>() * scale;
	}
	

	template <typename T>
	constexpr
	inline T EulerNumber ()
	{
		return T( 2.71828182845904523536 );
	}

	
	template <typename T>
	constexpr
	inline T ReciporalPi ()
	{
		return T( 0.3183098861837906715377 );
	}

	
	template <typename T>
	constexpr
	inline T HalfPi ()
	{
		return Pi<T>() / T(2);
	}

	
	template <typename T>
	constexpr
	inline T DoublePi ()
	{
		return Pi<T>() * T(2);
	}
	
	/*
	template <typename T>
	constexpr
	inline T Sqrt_2 ()
	{
		return T( 1.41421356237309504880 );
	}


	template <typename T>
	constexpr
	inline T Sqrt_3 ()
	{
		return T( 1.73205080756887729352 );
	}


	template <typename T>
	constexpr
	inline T Sqrt_5 ()
	{
		return T( 2.23606797749978969640 );
	}


	template <typename T>
	constexpr
	inline T Sqrt_10 ()
	{
		return T( 3.16227766016837933199 );
	}
	*/


}	// UXMath
}	// UX_STL

#endif	// _UXS_CONSTANTS_H